﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller; // Brug vores class library "Controller"
using Interfaces; // Brug vores class library "Interfaces"

namespace Sorts_F1
{
    public partial class FrmVisLogin : Form
    {
        // Attribut
        ClsSystemController systemController;

        public FrmVisLogin(ClsSystemController systemController) // Modtager controlleren fra start formen
        {
            InitializeComponent();
            this.systemController = systemController; // Istedet for at instansiere en ny controller bruger vi den der bliver sendt med
            this.MinimumSize = this.MaximumSize = this.Size; // Sørg for at formen altid er den nuværende størrelse
        }

        private void btnRegistrer_Click(object sender, EventArgs e)
        {
            FrmOpretMedlem frmReg = new FrmOpretMedlem(systemController); // Instansiere ny form af FrmOpretMedlem og sender controlleren med
            frmReg.ShowDialog(); /* ShowDialog gør at, du kan kun arbejde i den nye instasieret form og ikke de 
                                 andre eventuelt bagvedliggende, indtil den nye form bliver lukket igen*/

            OpdaterFormen(); // Opdatere FrmVisLogin når FrmOpretMedlem lukkes
        }

        private void btnTilbage_Click(object sender, EventArgs e)
        {
            this.Close(); // lukker formen
        }

        private void FrmVisLogin_Load(object sender, EventArgs e)
        {
            OpdaterFormen(); // Opdatere FrmVisLogin når FrmOpretMedlem loades
        }

        // Metode der skal bruges flere steder for at opdatere formen efter handlinger
        public void OpdaterFormen()
        {
            lvMedlem.Items.Clear(); // Clear først før de nye, opdaterede, informationer hentes ind.

            // henter alle medlemsinformationer og lægger det i listviewet
            foreach (var item in systemController.VisMedlemmer())
            {
                if (item.MedlemsNummer != 0)
                {
                    ListViewItem lvi = new ListViewItem(); // Instansiere nyt listview
                    lvi.SubItems[0].Text = item.Navn.ToString();
                    lvi.SubItems.Add(item.MedlemsNummer.ToString());
                    lvMedlem.Items.Add(lvi); // Addere subsitems til listviewet
                }
            }
        }

        private void btnLogInd_Click(object sender, EventArgs e)
        {
            try
            {
                systemController.MedlemLogin(int.Parse(txtMedlemsnummer.Text), txtPassword.Text);

                /* Hvis metoden "systemController.MedlemLogin" ikke finder et medlemsinterfaceobjekt hvor medlemmsnummer og password passer til 
                txtMedlemsnummer.Text og txtPassword.Text passer, så er aktuelt medlem ikke fundet (da informationer ikke passede på et objekt) og giver null */
                if (systemController.AktueltMedlem == null)
                {
                    MessageBox.Show("Medlemsnummer eller password er forkert.");
                    txtPassword.Clear();
                }

                else
                {
                    /* Hvis metoden "systemController.MedlemLogin" finder er objekt hvor medlemsnummer og password passer sammen, 
                    så er dette objekt det aktuelle og indlogingen kan foretages */
                    MessageBox.Show("Du er nu logget ind");
                    this.Close();
                }
            }

            catch
            {
                MessageBox.Show("Medlemsnummer eller password er forkert.");
            }
        }
    }
}
